<?php
class M_servicio extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener los servicios existentes tanto activos como inactivos, pero no los borrados (-1)
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT servicio.*, DATE_FORMAT(servicio.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, DATE_FORMAT(servicio.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM servicio
									  WHERE servicio.estado<>-1 $restriccion
									  ORDER BY servicio.nombre ASC");
		return($consulta);
	}
		
	//Este metodo se utiliza cuando queremos obtener los servicios activos existentes	
	function buscarActivos($restriccion=null){
		$consulta = $this->db->query("SELECT servicio.* 
									  FROM servicio
									  WHERE servicio.estado=1 $restriccion
									  ORDER BY servicio.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener el promedio de precio de los servicios activos existentes	
	function buscarPrecioPromedio(){
		$consulta = $this->db->query("SELECT avg(servicio.precio) as precioPromedio
									  FROM servicio
									  WHERE servicio.estado=1");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar un servicio
	function eliminar($idServicio=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `servicio` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `servicio`.`idServicio` = " . $this->db->escape($idServicio) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear un servicio
	function crear($nombre=null, $precio=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `servicio` (`idServicio`, `nombre`, `precio`, `fechaCreacion`, `estado`, `idCreador`) VALUES 
											     (NULL,".$this->db->escape($nombre).",".$this->db->escape($precio).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver un servicio en particular usado generalmente en el formulario de modificar
	function get($idServicio=null){
		$consulta = $this->db->query("SELECT servicio.*
									  FROM servicio
									  WHERE servicio.estado<>-1 AND servicio.idServicio=".$this->db->escape($idServicio)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver un servicio anterior o siguiente a uno en particular 
	function getContiguo($idServicio=null, $cant=null){
		do{			
			$idServicio+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM servicio
										  WHERE idServicio=".$this->db->escape($idServicio)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado=='-1');
		
		return($consulta->row()->idServicio);
	}
	
	//Este metodo se utiliza para modificar un servicio
	function modificar($idServicio=null, $nombre=null, $precio=null, $estado=null){
		$consulta = $this->db->query("UPDATE `servicio` 
									 SET `nombre` = ". $this->db->escape($nombre) .",
										 `precio` = ". $this->db->escape($precio) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `servicio`.`idServicio` = " . $this->db->escape($idServicio) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>